package DAO;

import Factory.ConnectionFactory;
import Modelo.CidadeBean;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;

public class CidadeDAO {

    private Connection conn;

    public CidadeDAO() throws Exception {
        conn = ConnectionFactory.getConnection();
    }

    public ArrayList<CidadeBean> consultar(String condicao) throws Exception {
        String sql;
        sql = "SELECT C.ID,";
        sql += "      C.NOME,";
        sql += "      C.UF";
        sql += " FROM CIDADE C";
        if ((condicao != null) && (!(condicao.isEmpty()))) {
            sql += " WHERE " + condicao;
        }

        PreparedStatement stmt;
        ResultSet rs;
        ArrayList<CidadeBean> aCidade = new ArrayList<CidadeBean>();
        try {
            stmt = conn.prepareStatement(sql);
            rs = stmt.executeQuery();
            while (rs.next()) {
                CidadeBean cidade = new CidadeBean();
                cidade.setId(rs.getInt("ID"));
                cidade.setNome(rs.getString("NOME"));
                cidade.setUf(rs.getString("UF"));

                aCidade.add(cidade);
            }
            ConnectionFactory.closeConnection(conn, stmt, rs);
            return aCidade;
        } catch (SQLException ex) {
            return null;
        }
    }

    public CidadeBean carregar(String condicao) throws Exception {
        String sql;
        sql = "SELECT C.ID,";
        sql += "      C.NOME,";
        sql += "      C.UF";
        sql += " FROM CIDADE C";
        if ((condicao != null) && (!(condicao.isEmpty()))) {
            sql += " WHERE " + condicao;
        }

        PreparedStatement stmt;
        ResultSet rs;
        CidadeBean cidade = new CidadeBean();
        try {
            stmt = conn.prepareStatement(sql);
            rs = stmt.executeQuery();
            while (rs.next()) {
                cidade.setId(rs.getInt("ID"));
                cidade.setNome(rs.getString("NOME"));
                cidade.setUf(rs.getString("UF"));
            }
            ConnectionFactory.closeConnection(conn, stmt, rs);
            return cidade;
        } catch (SQLException ex) {
            return null;
        }

    }

    public void GravarCidade(CidadeBean value) throws Exception {
        String sql;
        sql = "INSERT INTO CIDADE (";
        sql += " NOME,";
        sql += " UF";
        sql += " ) VALUES (";
        sql += value.getNome().toString() + ",";
        sql += value.getUf().toString() + " )";

        PreparedStatement stmt;
        stmt = (PreparedStatement) conn.createStatement();
        stmt.executeUpdate(sql);

        ConnectionFactory.closeConnection(conn, stmt, null);
    }
}
